%234567890          1234567890          1234567890          1234567890
%          1234567890          1234567890          1234567890          1234567890
% wtf is dit nou weer?
%
\documentclass[a4paper,10pt,twoside]{report}
\usepackage{dotss}
\usepackage{xr}

\begin{document}
\newcommand{\coursename}{Additional computer graphics (2IV05)}
\newcommand{\doctitle}{Proposal assigment `Water Meshes'}
\newcommand{\docversion}{0.1}
\newcommand{\docdate}{\today}

\dotsspreamble

\tableofcontents

\dotssdocument

\chapter{Global description of the system}
    Water can be a compelling part of any scene. But it's not trivial to render: refraction,
    reflection, and surface movements all contribute to the appearance of water. The system that will be built, shall be able to render
    two scenes: a swimming pool and an outdoor scene. The water will be displayed with reflection
    mapping, refraction mapping, and physical water simulation running entirely on the GPU. Also, bump mapping and a skybox will be added to bring realism to the scene.\\
    The program will visualise the 3D scenes. It will also provide some user interaction, such as moving around in the scenes or interacting with the water within these scenes.

\chapter{Functionality}
    The system will be able to implement the following requirements. These requirements are listed in
    order of priority. The goal is to implement all the requirements. However, if time would not permit
    to implement the lower priority requirements, some of those can be omitted.

\begin{enumerate}
    \item The system should render an approximation of a body of water. \label{it:simplewaterbody1}
    \item The system should simulate realistic looking movements of the water, by vertex oscillation.
    \item The system should facilitate camera movement. \label{it:simplewaterbody2}

    \item The system should render an approximation of refractions of the environment which is below the surface. \label{it:pool1}
    \item The system should render an approximation of reflections of the environment which is above the surface. \label{it:pool2}

    \item The system should render caustic light refractions on the bottom of the body of water.\label{it:outdoor1}
    \item The system should render the reflection of the skybox onto the water.
    \item The system should render refractions of the environment and objects which are below the surface.
    \item The system should render reflections of the environment and objects which are above the surface.\label{it:outdoor2}

\end{enumerate}
\medskip
The system should be able to render different scenes. These scenes are based on an incremental approach. They will be build in the following order:
\begin{enumerate}
    \item[[A]] A simple water mesh: this scene will contain only a water mesh. This scene should introduce requirements \ref{it:simplewaterbody1} to \ref{it:simplewaterbody2}.
    \item[[B]] A swimming pool: this is an indoor scene containing a swimming pool. This scene builds upon the simple water mesh scene. It introduces refraction and reflection. This scene will introduce requirements \ref{it:pool1} to \ref{it:pool2}.
    \item[[C]] An outdoor scene: this will be the most complex scene. The environment will be constructed from a user provided heightmap and will be bumpmapped. It should also contains a skybox. This scene will introduce requirements \ref{it:outdoor1} to \ref{it:outdoor2}.
\end{enumerate}




\chapter{Interaction}
The user interaction with the system will be limited. A user can change the camera view. Also it will be possible for a user to interact with the water mass. This interaction may consist of direct interaction (for example moving the mouse over the water surface will generate a wave), or indirect interaction by which the user may drop various objects into the water.\\
Also it will be possible for a user to change between different scenes. Two scenes will be provided by the program, and a third scene constructed from user supplied data. The first scene will consist of only a body of water. In this scene user interaction will be limited to viewing the water simulation from different angles, e.g. changing the camera position and zoom levels. The water animation in this scene will be predetermined and not under the control of the user.\\
The second program-proviced scene will be a simple rendition of a pool containing water. User interaction will again consist of camera controls supplemented with the ability to agitate the water by using the mouse.\\
The third scene will be constructed from a user-supplied heightmap wherein the low areas will be flooded with water. User interaction will consist again of camera controls and mouse interaction with the water, supplemented with the ability to drop objects into the body of water.

\chapter{Presentation}
    Three small presentations will be given, two intermediate presentations and one final presentation. The intermediate presentations are scheduled
    for  Tuesday 14/10/2008 and Tuesday 25/11/2008 respectively. These presentations will be given during the normal lecture hours on those days.
    The first presentation will focus on the initial implementation of the water body, demonstrating the initial water implementation. The second intermediate presentation will emphasize the refraction and reflection of the water surface. \\
    In the final presentation, the fully working program will be showed, which contains all of the described scenes. This presentation and discussion is not scheduled; an appointment will be made for Januari 2009.

\chapter{Planning}
\begin{tabular}{ |c | l| }\hline
    \textbf{Week number} & \textbf{tasks} \\\hline\hline
    35 &    Write a proposal for the water mesh assignment.\\
    36 &    Literature and material study.\\
    37 &    Setting up a coding environment and making architecture.\\
    38 &    Implementing camera movement, setting up water mesh.\\
    39 &    Start work on scene [A], finishing water mesh.\\
    40 &    [Examination week.] Finishing scene [A], updating report.\\
    41 &    Starting work on scene [B]: creating pool. Preparing on presentation.\\
    42 &    [Midterm deadline I.] Develloping pool environment.\\
    43 &    Implementing approximation of refraction.\\
    44 &    Implementing approximation of reflection. Finishing scene [B], updating report.\\
    45 &    Start work on scene [C]: Implement heightmap loading.\\
    46 &    [Examination week.] Implementing bumpmapping.\\
    47 &    Creating skybox. Preparing on presentation.\\
    48 &    [Midterm deadline 2.] Implement `real' reflection, including skybox and other objects.\\
    49 &    Implement `real' refraction.\\
    50 &    Implement caustics. Finishing scene [C], updating report.\\
    51 &    [Reserved time.]\\
    52 &    [On holiday.]\\
    01 &    Finishing report. Preparing on demonstration.\\
    02 &    Handing in report and demonstration + discussion.\\
    \hline
\end{tabular}

\appendix

\end{document}
